package cn.edu.qzuie.artist.module.td.dal.dataobject.teacher;

import cn.edu.qzuie.artist.framework.excel.core.annotations.DictFormat;
import cn.edu.qzuie.artist.framework.excel.core.convert.DictConvert;
import com.alibaba.excel.annotation.ExcelProperty;
import com.sun.xml.bind.v2.TODO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.LocalDate;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.edu.qzuie.artist.framework.mybatis.core.dataobject.BaseDO;

/**
 * 教师 DO
 *
 * @author 泉信管理员
 */
@TableName("td_teacher")
@KeySequence("td_teacher_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TeacherDO extends BaseDO {

    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("编号")
    private Long id;

    @Schema(description = "部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("部门编号")
    private Long departId;

    @Schema(description = "工号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2023032016")
    @ExcelProperty("工号")
    private String teacherNo;

    @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("密码")
    private String password;

    @Schema(description = "邮箱", example = "admin@126.com")
    @ExcelProperty("邮箱")
    private String email;

    @Schema(description = "真实姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
    @ExcelProperty("真实姓名")
    private String realName;

    @Schema(description = "艺名", example = "天翼")
    @ExcelProperty("艺名")
    private String nickName;

    @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "男")
    @ExcelProperty(value = "性别", converter = DictConvert.class)
    @DictFormat("system_user_sex") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Integer gender;

    @Schema(description = "生日", example = "1990-09-10")
    @ExcelProperty("生日")
    private LocalDate birthday;

    @Schema(description = "入职时间", example = "2009-09-09")
    @ExcelProperty("入职时间")
    private LocalDate hiredate;

    @Schema(description = "职称", example = "讲师")
    @ExcelProperty(value = "职称", converter = DictConvert.class)
    @DictFormat("professional_title") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Integer title;

    @Schema(description = "教师状态", example = "在职")
    @ExcelProperty(value = "教师状态", converter = DictConvert.class)
    @DictFormat("teacher_state") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Integer teacherState;

    @Schema(description = "个人介绍", example = "个人介绍")
    @ExcelProperty("个人介绍")
    private String description;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

}